package com.et.util

import okhttp3.internal.and
import org.junit.Test

class TransKtTest {

    @Test
    fun byte2Boolean() {
        for (i in Byte.MIN_VALUE..Byte.MAX_VALUE) {
            println("Test byte2Boolean $i ===  ")
            for (j in 0..7) {
                val i1 = i.shr(j) and 1
                println("" + i1 + "  " + i.toByte().parseBoolean(j))
            }
        }
    }

    @Test
    fun boolean2byte() {
        val b: Byte = 0
        for (j in 0..7) {
            println("" + j + "  " + b.parseBoolean(j))
        }
    }


    @Test
    fun byteArray2Int() {
        val byteArray = byteArrayOf(0xff.toByte(), 0xff.toByte(), 0xff.toByte())
        println(byteArray.toHexString(0, byteArray.size))
        println(0xffffff)
        println(byteArray.toDecimalInt(0, byteArray.size))
    }

    @Test
    fun byteArray2Long() {
        val byteArray = byteArrayOf(
            0xff.toByte(),
            0xff.toByte(),
            0xff.toByte(),
            0xff.toByte(),
            0xff.toByte(),
            0xff.toByte(),
            0xff.toByte()
        )
        println(byteArray.toHexString(0, byteArray.size))
        println(Long.MAX_VALUE)
    }

    @Test
    fun byteArray2BCDLong() {
        val b1: ByteArray =
            byteArrayOf(
                0x99.toByte(),
                0x9.toByte(),
                0x99.toByte(),
                0x99.toByte(),
                0x99.toByte(),
                0x99.toByte(),
                0x99.toByte(),
                0x99.toByte(),
            )
        println(b1.toBCDLong(0, b1.size))
    }

    @Test
    fun decimal2BCBByte() {
        for (i in -1..100) {
            println("Int[$i] Byte[0x${(i.toBCDByte() and 0xFF).toString(16)}]")
        }
    }

    @Test
    fun trim() {
        val s = "abc*fdas|faf\\fsa<sad>"
        val violationsTrim = s.violationsTrim()
        println(violationsTrim)
    }
}